package ModelLayer;

import java.util.ArrayList;
/**
 * Write a description of class KundeContainer here.
 * 
 * @author Zohdi Al-Ghandour
 * @version 05-12-2014
 */
public class KundeContainer
{
    // instance variables - replace the example below with your own
    private ArrayList<Kunde> kunder;
    private Kunde k;
    private static KundeContainer instance;

    /**
     * Constructor for KundeContainer
     */
    private KundeContainer()
    {
        kunder = new ArrayList<Kunde>();
    }

    /**
     * Retunere KundeContaineren
     * 
     *  @return Den eneste kundecontainer der burde eksistere
     */
    public static KundeContainer getInstance()
    {
        if(instance == null)
        {
            instance = new KundeContainer();
        }
        return instance;
    }

    /**
     * Tilføfer en kunde containeren
     * 
     * @param navn Navnet på kunden
     * @param addresse Kundens addresse
     * @param tlf Kundens telefonnummer
     * @param rabat Rabatten denne kunde kan nyde
     */
    public void addKunde(String navn, String address, String tlf, double rabat)
    {
        if(findKunde(tlf) == null)
        {
            kunder.add(new Kunde(navn,address,tlf, rabat));
        }
    }

    /**
     * Giver nye værdier til kunden fundet udfra telefonnummer
     * 
     * @param nr Kundens nuværende telefonnummer
     * @param navn Det ønskede navn, null for uændret
     * @param addresse Den øanskede addresse, null for uændret
     * @param tlf Det ønskede telefonnummer, null for uændret
     * @param rabat Den ønskede rabat, -1 for uændret
     */
    public boolean setKunde(String nr, String navn, String address, String tlf, double rabat)
    {
        boolean successful = false;
        Kunde kunde = findKunde(nr);
        if(kunde != null)
        {
            if(navn != null)
            {
                kunde.setNavn(navn);
            }
            if(address != null)
            {
                kunde.setAddress(address);
            }
            if(tlf != null)
            {
                kunde.setTlf(tlf);
            }
            if(rabat > -1)
            {
                kunde.setRabat(rabat);
            }
            successful = true;
        }
        return successful;
    }

    /**
     * Fjerner kunden med det anginve telefonnummer
     * 
     * @param nr Telefonnummeret på kunden der ønskes slettet
     * @return Retunere true ved success
     */
    public boolean removeKunde(String nr)
    {
        boolean found = false;
        if(findKunde(nr) != null)
        {
            kunder.remove(findKunde(nr));
            found = true;
        }
        return found;
    }

    /**
     * Returnere kunden med det anginve telefonnummer
     * 
     * @param nr Telefonnummeret på kunden der ønskes fundet
     * @return kunden med det anginve telefonnummer, null hvis ingen findes
     */
    public Kunde findKunde(String nr)
    {
        Kunde kunde = null;
        for(int i = 0; i < kunder.size(); i++)
        {
            if(kunder.get(i).getTlf().equals(nr))
            {
                kunde = kunder.get(i);
            }
        }
        return kunde;
    }
}
